package com.acme.bankapp.domain.bank;

import com.acme.bankapp.domain.bank.exceptions.NotEnoughFundsException;

public interface Account {

	/**
	 * Common method returning current balance
	 * @return balance 
	 */
	public abstract double getBalance();

	/**
	 * Add amount to balance
	 * @param amount
	 */
	public abstract void deposite(double amount);

	/**
	 * Try to perform withdraw on value amount
	 * Throws exception in case not enough amount
	 * @param amount
	 * @throws NotEnoughFundsException
	 */
	public abstract void withdraw(double amount) throws NotEnoughFundsException;
	
	/**
	 * Common method returning amount to withdraw
	 * @return max available amount to withdraw
	 */
	public abstract double maxAmountToWithdraw();

}